向C++程序中添加适当的并行性开发是使用SYCL的第一步。如果应用程序已经并行执行，在带来性能收益时，也可能带来令人头痛的问题。因为应用程序的工作方式为并行，极大地影响了可以用来做什么。当开发者谈到重构时，指的是重新安排程序内的执行流和数据流，以便为利用并行性做好准备。这是一个复杂的话题，我们只会简单地谈一谈。关于如何将程序并行化没有一个通用的答案，但是有一些技巧值得注意。\par

向C++应用程序添加并行性时，一种简单的方法是在程序中找到可并行性最大的点。可以从那里开始修改，然后根据需要继续在其他领域添加并行性。复杂的因素是，重构(例如，重新安排程序流和重新设计数据结构)可能提高并行性的机会。\par

当程序找到并行性机会最大的点，就需要考虑如何在程序中使用SYCL。\par

高层次上，引入并行性的关键步骤包括：\par

\begin{enumerate}
	\item 并发性的安全性(传统CPU编程中通常称为线程安全性):将所有共享的可变数据(可以更改和并发共享的数据)调整为并发使用
	\item 引入并发和/或并行
	\item 并行性调优(最佳扩展、吞吐量或延迟优化)
\end{enumerate}

许多应用程序已经为并发性进行了重构，将SYCL作为并行性的来源，关注内核中使用的数据以及可能与主机共享的数据的安全性。如果程序中有其他并行性技术(OpenMP、MPI、TBB等)的使用，这是SYCL编程之上的另一个关注点。需要注意的是，单个程序中使用多种技术是可以的——SYCL不是程序中并行性的唯一来源。本书不涉及与其他并行技术混合的高级主题。\par




















































